1 GOTO 6
2 GOSUB 10
3 GOSUB 18
4 ON G GOTO 2,1400,1500,1428,1700
5 RETURN 
6 OPTION BASE 1
7 DIM M$(37),DX(8),DY(8),X(32),Y(32),T(32),WH(8),AT(3),AX(3),AY(3),AD(3),AC(2)
8 DIM SX(4),SY(4),ST(4),SS(4),SG(2),BL(4),BX(4),BY(4),BT(4),BG(6)
9 GOTO 1000
10 GOSUB 223
11 IF I=0 THEN 393
12 K=POS("AZNMPWSDEXUQ",CHR$(K),1)+1
13 ON K GOTO 393,109,130,140,120,150,200,140,120,109,130,210,90
18 ON G GOSUB 10,5,5,5,5
20 IF NA=0 THEN 5
21 A=1-A*(A<NA)
24 IF AT(A)=0 THEN 5
25 ND=AD(A)
26 C=INT(RND*2+1)
27 IF RND<.1 THEN 330
28 GOTO 348
30 CALL HCHAR(Y(H),1+X(H),WH(W))
31 RETURN 
32 CALL HCHAR(V,U+1,C)
33 M$(V)=SEG$(M$(V),1,U-1)&Q$&SEG$(M$(V),U+1,21-U)
34 RETURN 
35 C=B0
36 Q$=B0$
37 GOTO 32
47 Q$=STR$(N)
48 U=U-LEN(Q$)+1
50 FOR N=1 TO LEN(Q$)
51 CALL HCHAR(V,U+N-1,ASC(SEG$(Q$,N,1)))
52 NEXT N
53 RETURN 
54 Q$=STR$(N)
55 GOTO 50
60 Q$=CHR$(8+A)
61 U=AX(A)
62 V=AY(A)
63 C=AC(AT(A))
64 GOTO 32
65 Q$=CHR$(16+S)
66 U=SX(S)
67 V=SY(S)
68 C=SG(SS(S))
69 GOTO 32
70 C=BG(BT(B))
71 V=BY(B)
72 U=BX(B)
73 Q$=CHR$(24+B)
74 ON BT(B) GOTO 32,75,80,32,75,80
75 FOR K=1 TO BL(B)
76 GOSUB 33
77 U=U+1
78 NEXT K
79 GOTO 88
80 FOR K=1 TO BL(B)
81 GOSUB 33
82 V=V+1
83 NEXT K
84 CALL VCHAR(BY(B),U+1,C,BL(B))
85 RETURN 
86 C=B0
87 GOTO 71
88 CALL HCHAR(V,BX(B)+1,C,BL(B))
89 RETURN 
90 Q=3-Q
91 RESTORE 96
92 FOR K=1 TO Q
93 READ Q$,V,U
94 NEXT K
95 GOTO 50
96 DATA q:sound,7,24,q:quiet,7,24
99 GOSUB 106
100 CALL HCHAR(23,2,34,N)
101 CALL HCHAR(23,2+N,32,21-N)
103 GOSUB 104
104 GOSUB 105
105 Z=Z+(Z>0)
106 N=INT(21*Z/99)
107 CALL HCHAR(23,2+N,32)
108 RETURN 
109 W=1
110 GOTO 400
120 W=2
121 GOTO 400
130 W=3
131 GOTO 400
140 W=4
141 GOTO 400
150 GOSUB 1620
152 GOSUB 223
153 IF I=0 THEN 155
154 IF K=80 THEN 152
155 GOSUB 220
157 RESTORE 20095
158 GOTO 10030
180 LI=LI-1
181 GOSUB 10044
182 GOSUB 20401
183 G=3-(LI>0)
184 RETURN 
200 SC=INT(SC/2)
202 G=5
204 GOTO 300
210 SC=INT(SC*0.9)
212 GOTO 181
220 GOSUB 223
221 IF I=0 THEN 220
222 IF K-80 THEN 220
223 CALL KEY(3,K,I)
224 RETURN 
300 N=SC
301 V=15
302 U=32
303 IF N>1 THEN 47
304 Q$=" "&STR$(N)
305 GOTO 48
330 ON C GOTO 331,335
331 ND=ND-1
332 IF ND THEN 348
333 ND=4
334 GOTO 348
335 ND=ND+1
336 IF ND<5 THEN 348
337 ND=1
348 U=AX(A)
349 V=AY(A)
350 NX=U+DX(ND)
351 NY=V+DY(ND)
352 CALL GCHAR(NY,NX+1,I)
353 IF I=B0 THEN 370
354 IF I=WM THEN 180
355 IF I=WH(W) THEN 180
356 IF I-ME THEN 330
369 GOSUB 379
370 GOSUB 35
371 AX(A)=NX
372 AY(A)=NY
373 AD(A)=ND
374 GOTO 60
379 E=E-1
380 IF E THEN 5
381 G=2
382 RETURN 
393 CALL JOYST(1,K,I)
394 K=3*I/4+K/4+5
395 ON K GOTO 130,130,120,140,396,120,140,109,109
396 CALL JOYST(2,K,I)
397 K=3*I/4+K/4+5
398 IF K-5 THEN 395
399 IF W>4 THEN 5
400 HX=X(H)
401 HY=Y(H)
402 NX=HX+DX(W)
403 NY=HY+DY(W)
404 K=ASC(SEG$(M$(NY),NX,1))
405 CALL GCHAR(NY,NX+1,I)
406 IF I=WM THEN 180
407 IF I=B0 THEN 420
408 IF I=B1 THEN 30
409 IF K=ME THEN 477
412 IF K<16 THEN 500
413 IF K<24 THEN 600
414 IF K<32 THEN 700
419 GOTO 180
420 IF J=0 THEN 430
421 J=J-1
422 IF L<MWL THEN 470
430 U=X(R)
431 V=Y(R)
433 H=T(H)
434 R=T(R)
440 CALL HCHAR(V,U+1,B0)
441 IF L=1 THEN 460
450 CALL HCHAR(HY,HX+1,WM)
460 X(H)=NX
461 Y(H)=NY
462 GOTO 30
470 L=L+1
471 T(H)=L
472 H=L
473 T(L)=R
475 GOTO 450
477 ON Q GOTO 479,478
478 CALL SOUND(-999,440,OV)
479 J=J+2
480 GOSUB 379
481 SC=SC+5
482 GOSUB 300
483 M$(NY)=SEG$(M$(NY),1,NX-1)&B0$&SEG$(M$(NY),NX+1,21-NX)
485 GOTO 420
500 IF K<9 THEN 413
501 A=K-8
502 IF AT(A)=1 THEN 180
509 ON Q GOSUB 5,513
510 SC=SC+20
511 AT(A)=0
512 GOTO 482
513 CALL SOUND(-200,-7,OV)
514 RETURN 
600 IF K<17 THEN 414
601 S=K-16
602 SS(S)=3-SS(S)
603 B=ST(S)
604 IF B=0 THEN 609
605 ON SS(S) GOSUB 70,86
609 W=W+4
610 ON Q GOTO 65,611
611 CALL SOUND(-250,SS(S)*330-110,OV)
612 GOTO 65
700 IF K<25 THEN 415
701 B=K-24
702 ON BT(B) GOTO 703,720,740,5,5,5
703 ON W GOTO 704,706,708,710
704 IF NY=2 THEN 5 ELSE 711
706 IF NX=20 THEN 5 ELSE 711
708 IF NY=20 THEN 5 ELSE 711
710 IF NX=2 THEN 5
711 U=NX+DX(W)
712 V=NY+DY(W)
714 CALL GCHAR(V,U+1,I)
715 IF I-B0 THEN 5
716 BX(B)=BX(B)+DX(W)
717 BY(B)=BY(B)+DY(W)
719 GOTO 750
720 IF DY(W) THEN 5
721 U=BX(B)
722 V=BY(B)
723 IF W=2 THEN 725
724 U=U+BL(B)-1
725 IF NX-U THEN 5
726 U=BX(B)+DX(W)
727 IF W=4 THEN 714
728 U=U+BL(B)-1
729 GOTO 714
740 IF DX(W) THEN 5
741 U=BX(B)
742 V=BY(B)
743 IF W=3 THEN 745
744 V=V+BL(B)-1
745 IF NY-V THEN 5
746 V=BY(B)+DY(W)
747 IF W=1 THEN 714
748 V=V+BL(B)-1
749 GOTO 714
750 U=BX(B)-(BL(B)-1)*(W=2)
751 V=BY(B)-(BL(B)-1)*(W=3)
752 C=BG(BT(B))
753 Q$=CHR$(B+24)
754 GOSUB 32
755 ON Q GOSUB 5,760
756 U=NX
757 V=NY
758 GOSUB 35
759 GOTO 483
760 CALL SOUND(-200,-6,OV)
761 RETURN 
1000 RESTORE 1002
1001 READ OV,Z,Q,MWL,G,HI,B0,B1,B0$,B1$,ME,ME$,WM,AC(1),AC(2),SG(1),SG(2)
1002 DATA 25,99,2,32,0,0,42,43,*,+,64,@,91,33,59,38,39,0,-1,92,1,0,93,0,1,94,-1,0,95,35,36,37,46
1008 CALL CLEAR
1010 FOR K=1 TO 4
1011 READ DX(K),DY(K),WH(K)
1012 WH(K+4)=WH(K)
1013 NEXT K
1016 DATA 44,45,2,1,16,16,1,3,4,3,1,5,8,12,1,2,2,9,1,1,1,6,1,e,WORM MAZE,1,24,a:up,3,24,z:down,4,24
1017 DATA n:left,5,24,m:right,6,24,u:undo,8,24,w:warp,9,24,SCORE:,14,27,LIVES:,17,27,LEVEL:,20,27
1018 DATA BEST:,23,28
1019 DATA loading,11,24,e,34,00FFFFFFFF
1020 FOR K=1 TO 6
1021 READ BG(K)
1022 NEXT K
1040 GOSUB 10000
1042 GOSUB 10020
1044 GOSUB 10030
1048 READ K$
1049 IF K$="e" THEN 1060
1050 READ Q$
1051 CALL CHAR(VAL(K$),Q$)
1052 ON 1-(Z<99) GOSUB 99,5
1053 GOSUB 105
1054 GOTO 1048
1055 DATA 43,DDDD00BBBBBB00DD,42,11004400220088,64,0000183C3C18,33,E7A5FF7E7E7E24E7,59,3C243C187EBDBD81,91
1056 DATA 3C7EFFFFFFFF7E3C,63,7C829AA2A29A827C,92,2442E79F9FFF7E3C,93,3C66E5F8F8FD7E3C,94,3C7EFF9F9FE74224,95
1057 DATA 3C66A71F1FBF7C3C,38,00C0C020107C7C,39,00060608107C7C,46,FFC5ABC5ABC5ABFF,35,FFC5ABC5ABC5ABFF,44
1058 DATA FFDB990099DBFF55,36,FFDB990099DBFFFF,45,EFC683EEEF82C7EE,37,EFC783EFEF83C7EF,e
1060 FOR K=22 TO 37
1061 I=K-22
1062 V=8
1063 M$(K)=M$(K)&SEG$(B0$&B1$,2+(I<V),1)
1064 I=I+V*(V<=I)
1065 V=V/2
1066 IF V>=1 THEN 1063
1067 GOSUB 105
1068 NEXT K
1120 RESTORE 1121
1121 DATA 0,3,1,1,0
1122 READ SC,LI,RL,L,G
1124 GOSUB 10044
1130 Z=60
1132 GOSUB 99
1150 GOSUB 20107
1152 GOSUB 1620
1200 GOSUB 220
1290 GOSUB 99
1300 GOSUB 1610
1302 GOSUB 157
1309 READ R,T(1),L,H,G
1310 GOSUB 30
1312 GOSUB 91
1320 GOTO 2
1400 I=50*RL
1402 SC=SC+I
1404 Q$="BONUS "&STR$(I)
1406 GOSUB 20400
1408 GOSUB 10084
1420 RL=RL+1
1422 LE=LE+1
1424 GOSUB 10044
1428 GOSUB 1610
1430 Z=70
1432 GOSUB 99
1434 GOSUB 20100
1490 GOTO 1302
1500 Q$="GAME OVER"
1502 GOSUB 10082
1505 IF SC<=HI THEN 1508
1506 HI=SC
1507 GOSUB 10060
1508 ON 1-(RL>1) GOSUB 1610,5
1510 GOTO 1120
1610 RESTORE 1019
1612 GOTO 10030
1620 RESTORE 20094
1622 GOTO 10030
1700 Q$="warp"
1702 GOTO 1406
9000 DATA l,1,eggs,9,0,0,0,8,20,2,11111,44445,7DF5D,00011,55555,11145,55555,11111,F5F5D,04445,71555,45551
9001 DATA 11117,F5D71,04105,75D75,41111,5C75D,01041,2,2,20,2,2,20,20,20,10,11,11,2,11,20,2,11,20,11
9010 DATA l,2,push,9,0,4,0,8,20,3,04401,755D5,45515,1D575,41445,7775D,04141,DDC7D,051C5,75455
9011 DATA 41755,5D111,11D77,F5141,04555,75D55,11155,5F555,00111,2,2,20,2,2,20,20,20,12,11
9012 DATA 12,2,12,20,2,11,20,11,3,8,13,2,2,9,20,2,3,12,10,1,1,18,15,1
9020 DATA l,3,meat,9,3,0,0,8,20,3,00411,775D5,10045,5FF5D,41145,75555,05411,DD7F5,10405,575DD,44505
9021 DATA 75D75,41045,57755,11451,DD557,04111,5775D,10041,2,2,20,2,2,20,20,20,12,11
9022 DATA 12,2,11,20,2,11,20,11,2,6,8,4,2,16,14,3,2,12,8,2
9030 DATA l,7,toys,9,0,3,1,8,20,3,00011,5F7D5,41015,7DF75,40005,5F5FD,00401,F5FDF,04041,7DF7D,00841,FABDF
9031 DATA 02051,78F55,42005,5EEBD,50285,57AF5,10201,2,2,20,2,2,20,20,20,11,12,11,2,11,20,2,11,20,11
9032 DATA 4,7,13,1,2,13,6,3,3,9,15,3,1,14,5,1
9040 DATA l,8,hard,9,1,4,2,8,20,3,10101,55D7D,44045,76AD5,20A15,AFBC1,2207D,7AD45,0A951,62B1D,46041,10B59
9041 DATA FDA43,040E9,75E0D,144A5,455B5,6D515,01041,2,2,20,2,2,20,20,20,11,11,11,2,11,20,2,11,20,11
9042 DATA 1,16,7,1,4,7,20,1,1,11,12,1,1,5,11,1,2,10,4,2,1,20,13,1,4,15,15,1
9050 DATA l,6,hunt,9,2,0,0,8,20,3,08821,6AAAD,42085,1F5F5,C4411,1575D,71041,17EFB,C0889,1EAAD,42221,7B7F7
9051 DATA 41101,1555D,F4445,17DF5,44445,6D55D,01101,2,2,20,2,2,20,20,20,11,11,11,2,11,20,2,11,20,11
9052 DATA 1,16,8,2,2,8,8,4
9060 DATA l,4,flip,9,0,4,4,8,20,3,11111,54545,55555,45511,751D7,15701,D107D,1B741,50117,55D51,4515D,5D751
9061 DATA 10057,F76D1,14445,45551,7555D,45545,11111,2,2,20,2,2,20,20,20,12,11,11,2,11,20,2,11,20,11
9062 DATA 6,13,14,3,6,7,8,3,5,16,6,3,4,9,3,1,1,5,18,1,2,17,7,1,3,17,16,1,4,10,9,1
9070 DATA l,5,bite,9,2,0,0,8,20,3,04001,7577D,45145,5DD55,41115,77751,1045F,45D41,7C17D,45B01,1107D,7D745
9071 DATA 04411,F5DDD,10905,56B75,44945,7DD5D,00041,2,2,20,2,2,20,20,20,11,11,11,2,11,20,2,11,20,11
9072 DATA 1,8,6,4,1,16,9,2,e
10000 READ SB,CSF
10001 CALL CLEAR
10002 CALL SCREEN(SB)
10004 READ CST,FC,BC
10005 FOR CS=CSF TO CST
10006 CALL COLOR(CS,FC,BC)
10007 NEXT CS
10008 RETURN 
10020 READ K$
10021 IF K$="e" THEN 5
10022 CSF=VAL(K$)
10023 GOSUB 10004
10024 GOTO 10020
10030 READ Q$
10031 IF Q$="e" THEN 5
10032 READ V,U
10033 GOSUB 50
10034 GOTO 10030
10044 GOSUB 300
10045 GOSUB 10050
10046 GOSUB 10055
10047 GOTO 10060
10048 LI=LI+1
10049 ON Q GOSUB 5,513
10050 Q$=SEG$(" ]]]]]",1,LI+1)
10051 V=18
10052 U=32
10053 GOTO 48
10055 N=RL
10056 V=21
10057 GOTO 302
10060 N=HI
10061 V=24
10062 GOTO 302
10080 IF LE>1 THEN 10084
10081 Q$="LEVEL:"&Q$
10082 U=2
10083 GOTO 10085
10084 U=8
10085 V=22
10086 CALL HCHAR(V,8,32,18)
10087 GOSUB 50
10088 GOTO 10055
10091 Q$=""
10092 GOTO 10080
20094 DATA ?plee:jun2010,24,2,"p:play ",11,24,e
20095 DATA p:pause,11,24,e,1,1,1,1,1
20100 RESTORE 9000
20101 READ K$
20102 IF K$="e" THEN 20105
20103 IF K$="l" THEN 20109
20104 GOTO 20101
20105 ON 2+(LI+G*E<5) GOSUB 10048,5
20107 LE=1
20108 GOTO 20100
20109 GOSUB 103
20110 READ K,L$,E,NA,NB,NS,X(1),Y(1),W
20111 IF K-LE THEN 20101
20112 GOSUB 10091
20113 FOR V=2 TO 20
20114 GOSUB 105
20115 CALL HCHAR(V,3,B0,19)
20116 READ M$(V)
20117 NEXT V
20118 IF G THEN 20129
20120 M$(1)=B1$&M$(37)&M$(37)&M$(37)&M$(37)&M$(37)
20121 CALL HCHAR(1,2,B1,21)
20123 CALL HCHAR(21,2,B1,21)
20125 M$(21)=M$(1)
20129 U=2
20130 FOR V=2 TO 20
20131 Q$=B1$
20132 FOR K=1 TO 5
20134 Q$=Q$&M$(POS("0123456789ABCDEF",SEG$(M$(V),K,1),1)+21)
20135 NEXT K
20136 GOSUB 105
20137 GOSUB 50
20138 M$(V)=Q$
20139 NEXT V
20141 Q$=ME$
20142 C=ME
20143 FOR K=1 TO E
20144 READ U,V
20145 GOSUB 32
20146 NEXT K
20150 GOSUB 104
20154 J=-RL*(RL<=15)-16*(RL>15)-1
20171 FOR A=1 TO NA
20172 READ AT(A),AX(A),AY(A),AD(A)
20173 GOSUB 60
20174 NEXT A
20176 FOR B=1 TO NB
20177 READ BT(B),BX(B),BY(B),BL(B)
20178 GOSUB 70
20179 NEXT B
20181 FOR S=1 TO NS
20182 READ ST(S),SX(S),SY(S),SS(S)
20183 GOSUB 65
20184 NEXT S
20190 Q$=L$
20191 GOSUB 103
20192 IF Z THEN 20191 ELSE 10084
20400 CALL HCHAR(Y(H),1+X(H),WM)
20401 CALL HCHAR(Y(R),1+X(R),B0)
20402 R=T(R)
20403 L=L-1
20404 ON Q GOSUB 5,20420
20410 IF R-H THEN 20401
20412 CALL HCHAR(Y(H),1+X(H),B0)
20414 RETURN 
20420 CALL SOUND(100,110+L*10,OV)
20422 RETURN 
